package cn.le.agent;

/**
 * Created by admin on 2017/6/1.
 *
 * 静态代理,利用实现相同的结构,采用内部调用的方式实现
 *
 */
public interface Interface {

    void doSomething();

    void somethingElse(String arg);
}

class RealObject implements Interface{

    public void doSomething()
    {
        System.out.println("doSomething");
    }
    public void somethingElse(String arg)
    {
        System.out.println("somethingElse "+ arg);
    }
}

class SimpleProxy implements  Interface{

    private Interface proxied;

    public SimpleProxy()
    {

    }

    public SimpleProxy(Interface proxied)
    {
        this.proxied = proxied;
    }

    public void doSomething()
    {
        System.out.println("SimpleProxy doSomething");
       // proxied.doSomething();
    }
    public void somethingElse(String arg)
    {
        System.out.println("SimpleProxy somethingElse "+arg);
        //proxied.somethingElse(arg);
    }
}

class SimpleProxyDemo{

    public  static void consumer(Interface iface)
    {
        iface.doSomething();
        iface.somethingElse("bonobo");
    }

    public static void main(String[] args) {

        consumer(new RealObject());
        consumer(new SimpleProxy(new RealObject()));

    }

}












